package com.zjsru.oneDay202205;

/**
 * @Author: likew
 * @Date: 2022/5/5
 * 乘积小于 K 的子数组
 *
 * 输入：nums = [10,5,2,6], k = 100
 * 输出：8
 * 解释：8 个乘积小于 100 的子数组分别为：[10]、[5]、[2],、[6]、[10,5]、[5,2]、[2,6]、[5,2,6]。
 * 需要注意的是 [10,5,2] 并不是乘积小于 100 的子数组。
 *
 */
public class numSubarrayProductLessThanK {
    public int numSubarrayProductLessThanK(int[] nums, int k) {
        int len = nums.length, ans = 0;
        if(k <= 1) return 0;
        for(int i = 0,j = 0,cur = 1;i < len;i++){
            cur *= nums[i];
            while(cur >= k) cur /= nums[j++];
            ans += i - j + 1;
        }
        return ans;
    }
    
    public static void main(String[] args) {
        numSubarrayProductLessThanK numSubarrayProductLessThanK = new numSubarrayProductLessThanK();
        int[] nums = new int[]{1,1,1};
        int k = 2;
        System.out.println(numSubarrayProductLessThanK.numSubarrayProductLessThanK(nums, k));
    }
}
